package moc.type;


//extends ROWTYPE si on veut s'amuser avec un peu d'aritmetique des pointeurs, 
//implements DTYPE si on n'est pas d'humeur 

public class POINTEURTYPE implements DTYPE {
	
	private DTYPE type ;
	private boolean isNull ;
	
	
	public boolean isNull() {
		return isNull;
	}

	public void setNull(boolean isNull) {
		this.isNull = isNull;
	}

	public POINTEURTYPE(DTYPE type_){
		this.type = type_ ;
	}
	
	public POINTEURTYPE(){
		
	}
	

	@Override
	public int getTaille() {
		
		return 1;
	}

	@Override
	public String toString() {
		
		return "*"+this.type.toString();
	}
	
	public DTYPE typePointe(){
		return this.type ;
	}

	@Override
	public boolean equals(DTYPE autre) {
		boolean c1,c2 ;
		//System.out.println("autre pointe "+((POINTEURTYPE)autre).type) ;
		
		c1 = (autre instanceof POINTEURTYPE) && (((POINTEURTYPE)autre).type).equals(this.type);
        c2 = autre instanceof ARRAYTYPE && ((ARRAYTYPE)autre).getType().equals(type) ;
		
		return c1 || c2;
		

	}

	@Override
	public boolean conforms(DTYPE autre) {
		System.out.println("autre "+autre) ;
	
		return equals(autre)|| autre instanceof INTEGERTYPE||this.type instanceof VOIDTYPE ;
	}

}
